Dozent | Prof.Dr.Herbert Klaeren, Michael Sperber |
Sprechstunde | Prof. Klaeren: Fr 911, Sand 13, Zi.110 M. Sperber: n.V. |
Zeit | Di 810, Do 89 |
Umfang | 3+2 |
Beginn | 15.4.1997 |
Ort | Morgenstelle, M2 |
Turnus | unregelmäßig |
Prüfungsfach | Praktische und theoretische Informatik |
Beschreibung:
Funktionale Programmiersprachen sind imperativen Sprachen wie C, C++,
Ada, Java etc.deutlich überlegen, die allesamt einen völlig veralteteten
Stand der Technik repräsentieren. Funktionale Sprachen ermöglichen
es, Software deutlich schneller zu entwickeln, sie zuverlässiger und
weniger anfällig zu machen und einfacher zu warten, schon weil funktionale
Programme in der Regel etwa fünfmal kürzer sind als ihre imperativen
Pendants.
% Objektorientierte Programmierung, Modularisierung und hocheffiziente
Compiler haben Einzug in der funktionalen Programmierung gehalten. Der
Schlüssel zur Leistungsfähigkeit dieser Sprachen ist allerdings,
daß Funktion Objekte erster Klasse sind, also an Funktionen übergeben,
von ihnen zurückgegeben und in Datenstrukturen abgelegt werden können.
Dies führt zu einer großen Flexibilität im Zusammensetzen
von Programmkomponenten zu größeren Programmen.
% Da funktionale Sprachen in der Regel wohlspezifiziert sind und Funktionen
sich tatsächlich wie mathematische Funktionen verhalten, ist es in
ihnen deutlich einfacher, Beweise über Korrektheit zu führen
als in anderen Sprachen (kein umständlicher Hoare-Kalkül mehr).
Viele Compileroptimierungen und auch automatische Parallelisierung werden
ebenfalls einfacher. Theorie und Praxis hängen in der funktionalen
Programmierung eng zusammen.
% Die Vorlesung beschäftigt sich sowohl mit den praktischen Aspekten
des Programmierens in funktionalen Sprachen als auch mit den theoretischen
Hintergründen, die wiederum zu Implementationsaspekten führen.
Es wird dabei die funktionale Sprache Haskell benutzt, ein Hauptvertreter
dieser Sprachfamilie.
% Hörern wird also ein intensiver Einblick in moderne Programmiertechniken
gegeben; im Gegenzug wird aber von ihnen eine Auseinandersetzung mit der
gesamten Materie erwartet, die auch einiges an (praktisch relevanter!)
Theorie enthält.
Voraussetzungen:
Grundstudium Informatik, keine Angst vor Theorie
Literatur: